object_name: extend ObjectName
authorFelix Krull <f_krull@gmx.de>
Tue, 9 Oct 2018 17:32:22 +0000 (19:32 +0200)
committerColin Walters <walters@verbum.org>
Fri, 6 May 2022 16:53:53 +0000 (12:53 -0400)
rust-bindings/rust/libostree/src/object_name.rs
rust-bindings/rust/libostree/src/repo.rs

index 052466312a07f6f87710567c75eb9f558a598afa..bec63eb88d403cf372b9b36a1d53a792ab75b6dd 100644 (file)
@@ -1,15 +1,14 @@
 use ffi;
-use functions::object_name_deserialize;
+use functions::{object_name_deserialize, object_name_serialize, object_to_string};
 use glib;
-use glib_ffi;
 use glib::translate::*;
+use glib_ffi;
 use ObjectType;
 use std::fmt::Display;
 use std::fmt::Error;
 use std::fmt::Formatter;
 use std::hash::Hash;
 use std::hash::Hasher;
-use functions::object_to_string;
 
 fn hash_object_name(v: &glib::Variant) -> u32 {
     unsafe { ffi::ostree_hash_object_name(v.to_glib_none().0 as glib_ffi::gconstpointer) }
@@ -23,7 +22,7 @@ pub struct ObjectName {
 }
 
 impl ObjectName {
-    pub fn new(variant: glib::Variant) -> ObjectName {
+    pub fn new_from_variant(variant: glib::Variant) -> ObjectName {
         let deserialize = object_name_deserialize(&variant);
         ObjectName {
             variant,
@@ -32,6 +31,16 @@ impl ObjectName {
         }
     }
 
+    pub fn new<S: Into<String>>(checksum: S, object_type: ObjectType) -> ObjectName {
+        let checksum = checksum.into();
+        let variant = object_name_serialize(checksum.as_str(), object_type).unwrap();
+        ObjectName {
+            variant,
+            checksum,
+            object_type,
+        }
+    }
+
     pub fn checksum(&self) -> &str {
         self.checksum.as_ref()
     }
index d46861efd6463014d398be2283325a6c5d057579..1fec31a4e945f27bf650e2aa55978df26e62d916 100644 (file)
@@ -14,7 +14,7 @@ use ObjectName;
 unsafe extern "C" fn read_variant_table(_key: glib_ffi::gpointer, value: glib_ffi::gpointer, hash_set: glib_ffi::gpointer) {
     let value: glib::Variant = from_glib_none(value as *const glib_ffi::GVariant);
     let set: &mut HashSet<ObjectName> = &mut *(hash_set as *mut HashSet<ObjectName>);
-    set.insert(ObjectName::new(value));
+    set.insert(ObjectName::new_from_variant(value));
 }